home *** CD-ROM | disk | FTP | other *** search
- PROGRAM bit_map2;
-
- CONST
- header = 'Test < Bit Mapping Routine >';
-
- VAR
- more,response : CHAR;
- ans : ARRAY[1..8] OF BOOLEAN;
- hold : BYTE;
- i : INTEGER;
-
- PROCEDURE set_bits(VAR flag : BYTE; a,b,c,d,e,f,g,h : BOOLEAN);
- BEGIN
- flag := 0;
- IF a THEN flag := flag OR $80;
- IF b THEN flag := flag OR $40;
- IF c THEN flag := flag OR $20;
- IF d THEN flag := flag OR $10;
- IF e THEN flag := flag OR $08;
- IF f THEN flag := flag OR $04;
- IF g THEN flag := flag OR $02;
- IF h THEN flag := flag OR $01
- END;
-
- PROCEDURE get_bits(flag : BYTE; VAR a,b,c,d,e,f,g,h : BOOLEAN);
- BEGIN
- a := (flag AND $80 <> 0);
- b := (flag AND $40 <> 0);
- c := (flag AND $20 <> 0);
- d := (flag AND $10 <> 0);
- e := (flag AND $08 <> 0);
- f := (flag AND $04 <> 0);
- g := (flag AND $02 <> 0);
- h := (flag AND $01 <> 0)
- END;
-
- PROCEDURE set_up_screen;
- BEGIN
- CLRSCR; WRITELN; WRITELN(header); WRITELN;
- END;
-
- BEGIN
- REPEAT
- set_up_screen;
- FOR i := 1 TO 8 DO
- BEGIN
- WRITE('Question # ',i,' Answer Y/N : ');
- READ(KBD,response); WRITELN(UPCASE(response));
- ans[i] := (response IN ['Y','y'])
- END;
- set_bits(hold,ans[1],ans[2],ans[3],ans[4],ans[5],ans[6],ans[7],ans[8]);
- get_bits(hold,ans[1],ans[2],ans[3],ans[4],ans[5],ans[6],ans[7],ans[8]);
- WRITELN;
- FOR i := 1 TO 8 DO
- BEGIN
- WRITE('Bit # ',i);
- IF ans[i] = TRUE THEN WRITELN(' is true.') ELSE WRITELN(' is false.');
- END;
- WRITELN;
- WRITE('The byte has a value of ',hold,'. Want to run it again ? ');
- READ(KBD,more); more := UPCASE(more);
- UNTIL more <> 'Y';
- END.